Question

I try send wap push message. I set datacoding 0xf5 and send submit sm with following message:

GSM Short Message Service User Data

    udh length: 6
    16-bit address 05 04
    Destination port 08b4
    Source port 23f0

Wireless Session Protocol, Method: Push (0x06), Content-Type: application/vnd.wap.sic

    Transaction Id: 0x25
    PDU Type: Push (0x06)
    Header length: 1
    Content type: application/vnd.wap.sic

WAP Binary XML, Version: 1.2, Public ID: "-//WAPFORUM//DTD SI 1.0//EN (Service Indication 1 .0)"

    Version: 1.2 (0x02)
    Public Identifier: (known): -//WAPFORUM//DTD SI 1.0//EN (Service Indication 1 .0)
    Character Set: utf-8 (0x000006a) 
    String table: 0 bytes

Data representation:

    45 <si>
    c6 <indication
    0c href='http://'
    03 69 2e 69 6d 67 75 72 2e 63 6f 6d 2f 66 6a 49 44 4e 2e 6a 70 67 00  i.imgur.com/fjIDN.jpg'
    07 action='signal-medium'
    01 >
    03 69 6d 67 75 72 00 'imgur'
    01 </indication>
    01 </si>

Message bytes:

    06 05 04 0b 84 23 f0 25 06 01 ae 02 05 6a 00 45
    c6 0c 03 69 2e 69 6d 67 75 72 2e 63 6f 6d 2f 66
    6a 49 44 4e 2e 6a 70 67 00 07 01 03 69 6d 67 75
    72 00 01 01

SMSC return: Submit_sm - resp: "OK". But the phone did not show nothing. Any ideas? Sorry for my ugly english :)

Was it helpful?

Solution

I can't fully justify why these changes work, but from extensive testing a few years back the following seemed to work reliably across the UK networks and a range of different handsets. It's in use in production code and we haven't seen any problems since.

06 - UDHL
05 - EI (Send to Ports 16bit addr)
04 - EIDL
0B - src port
84 - src port
23 - dest port
F0 - dest port (End of UDH)

01 - trans id
06 - Push
04 - Header Length
03 - Length
AE - Content type (application/vnd.wap.sic)
81 - Character Set (01 once removed high bit)
EA - UTF 8 (6A once removed high bit)

02 - Binary XML Version 1.2 
05 - SI Identifier
6A - UTF-8
00 - End Data

45 - SI Binary XML Tag
C6 - Indication Tag
0B - href
03 - Open Text 
    (URL bytes go here...)
00 - End Data
0A - Created (date)
C3 - Data Follows
07 - Data Length
20 - date yy (century)
08 - date yy (year)
03 - date mm
26 - date dd
16 - date HH
09 - date MM
12 - date ss
01 - Close Attribute
03 - Open Text (Text Goes in here...)
00 - End Data
01 - Close Indication Tag
01 - Close SI Tag

There are a few differences to your send:

  1. UTF-8 Character set specified on the Wireless Session Protocol header
  2. http:// is written in full as bytes, I don't think this made a difference but it was required by the rest of our application.
  3. No action on the indication tag
  4. Added a created date attribute - This seemed to make a big difference to handset support (I'm not quite sure why).
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top